-- @Author: 作者QQ201878826
-- @Date:   2022-04-25 08:30:02
-- @Last Modified by:   作者QQ381990860
-- @Last Modified time: 2022-07-19 08:41:03
function 任务控制类:领取门派闯关任务(id)
  if 玩家数据[id].队伍 == 0   then
    发送数据(玩家数据[id].连接id, 7, "#y/参与此活动必须队伍人数达到1人")
    return 0
  elseif #队伍数据[玩家数据[id].队伍].队员数据 < 1  and DebugMode == false then
    发送数据(玩家数据[id].连接id, 7, "#y/参与此活动必须队伍人数达到1人")
    return 0
  elseif 取队伍符合等级(id, 60) == false and DebugMode == false then
    广播队伍消息(id, 7, "#y/参与此活动需要队伍所有成员等级达到60级")
    return 0
  else
    self.任务重复 = false
    self.重复名称 = ""
    for n = 1, #队伍数据[玩家数据[id].队伍].队员数据 do
      self.闯关临时id = 队伍数据[玩家数据[id].队伍].队员数据[n]
      if 角色处理类:GetTaskID(玩家数据[self.闯关临时id],"门派闯关") ~= 0 then
        广播队伍消息(id, 7, "#y/" .. 玩家数据[self.闯关临时id].角色.名称 .. "已经领取过此任务了")
        self.任务重复 = true
      end
    end
    if self.任务重复 == false then

      self:添加门派闯关任务(id)
    end
  end
 end
function 任务控制类:添加门派闯关任务(id)
 self.闯关id=tonumber(玩家数据[id].id.."56")

  任务数据[self.闯关id]={
 类型="门派闯关"
 ,id=id
 ,起始=os.time()
 ,结束=2400
 ,编号=0
 ,任务id=self.闯关id
 ,地图编号=0
 ,地图名称=0
 ,名称=0
 ,坐标=0
 ,数字id={}
 ,客户id={}
 ,关卡数量={}
 ,当前关卡=0
 ,战斗=false
 }
 任务数据[self.闯关id].当前关卡=math.random(#门派闯关活动id)
 self.任务id组={}
 if 玩家数据[id].队伍==0 then

   self.任务id组[#self.任务id组+1]=id
  else
   for n=1,#队伍数据[玩家数据[id].队伍].队员数据 do
     self.任务id组[#self.任务id组+1]=队伍数据[玩家数据[id].队伍].队员数据[n]
     end
   end
  for n=1,#self.任务id组 do
   self.任务临时id1=角色处理类:生成任务id(玩家数据[self.任务id组[n]])
   玩家数据[self.任务id组[n]].角色.任务数据[self.任务临时id1]=self.闯关id
     self:刷新追踪任务信息(self.任务id组[n])
    end
 self.对话内容=" #W/请你们立即前往#Y/"..任务数据[门派闯关活动id[任务数据[self.闯关id].当前关卡]].门派.."#W/接受考验，当前正在进行第#R/"..(#任务数据[self.闯关id].关卡数量+1).."#W/次考验。"
 发送数据(玩家数据[id].连接id,20,{"御林军","门派闯关使",self.对话内容})
 end
function 任务控制类:结束门派闯关活动()
  if 门派闯关活动id==nil then
     return
  end
 发送游戏公告("十八门派闯关活动已经结束，处于战斗中的玩家将被强制退出战斗，所有已领取任务的玩家会被自动取消任务。")
 门派闯关开关=false
 for n, v in pairs(战斗准备类.战斗盒子) do
   if 战斗准备类.战斗盒子[n].战斗类型==100012 or  (战斗准备类.战斗盒子[n].战斗类型 >=888903 and 战斗准备类.战斗盒子[n].战斗类型 <=888911) then
      战斗准备类.战斗盒子[n]:强制结束战斗()
      战斗准备类.战斗盒子[n]=nil
     end
   end
  for n, v in pairs(玩家数据) do
   if 玩家数据[n]~=nil then
     if 角色处理类:GetTaskID(玩家数据[n],"门派闯关")~=0 then
       角色处理类:取消任务(玩家数据[n],角色处理类:GetTaskID(玩家数据[n],"门派闯关"))
       任务数据[角色处理类:GetTaskID(玩家数据[n],"门派闯关")]=nil
       发送数据(玩家数据[n].连接id,7,"#y/你的门派闯关任务已经取消了")
       end
     end
  end
  for n=1,#门派闯关活动id do
   地图处理类:移除单位(任务数据[门派闯关活动id[n]].地图编号,门派闯关活动id[n])
   任务数据[门派闯关活动id[n]]=nil
    end

 end






function 任务控制类:开启门派闯关活动()
  发送游戏公告("十八门派闯关活动已经开启，大量经验物品等你来拿。各位玩家可前往长安城门派闯关活动使者处参与本活动。")
  门派闯关奖励 = {高级必杀={id=0,时间=0},高级法术暴击={id=0,时间=0},高级连击={id=0,时间=0},高级强力={id=0,时间=0},高级冥思={id=0,时间=0},高级幸运={id=0,时间=0},高级招架={id=0,时间=0},高级感知={id=0,时间=0},高级再生={id=0,时间=0},高级夜战={id=0,时间=0},高级敏捷={id=0,时间=0}}
  门派闯关开关=true
  门派闯关活动id={}
    local 首席弟子数据类={
    "大唐官府",
    "化生寺",
    "女儿村",
    "方寸山",
    "天宫",
    "龙宫",
    "五庄观",
    "普陀山",
    "魔王寨",
     "狮驼岭",
     "盘丝洞",
     "阴曹地府",
     "凌波城",
     "无底洞",
     "神木林",
      "花果山",
      "天机城",
      "女魃墓",
  }

   local 首席弟子={
   龙宫={造型="龙太子",武器= "飞龙在天",地图=1116,方向=1,x=73,y=76}
  ,女儿村={造型="英女侠",武器= "祖龙对剑",地图=1142,方向=0,x=71,y=76}
  ,化生寺={造型="逍遥生",武器= "秋水人家",地图=1002,方向=1,x=32,y=76}
  ,大唐官府={造型="剑侠客",武器= "晓风残月",地图=1198,方向=1,x=140,y=46}
  ,普陀山={造型="玄彩娥",武器= "青藤玉树",地图=1140,方向=0,x=70,y=50}
  ,五庄观={造型="神天兵",武器= "混元金锤",地图=1146,方向=0,x=20,y=24}
  ,魔王寨={造型="巨魔王",武器= "斩妖泣血",地图=1512,方向=0,x=41,y=48}
  ,狮驼岭={造型="虎头怪",武器= "五丁开山",地图=1131,方向=3,x=108,y=14}
  ,天宫={造型="舞天姬",武器= "晃金仙绳",地图=1111,方向=0,x=187,y=128}
  ,方寸山={造型="飞燕女",武器= "九天金线",地图=1135,方向=1,x=65,y=132}
  ,盘丝洞={造型="狐美人",武器= "血之刺藤",地图=1513,方向=0,x=147,y=117}
  ,阴曹地府={造型="骨精灵",武器= "墨玉骷髅",地图=1122,方向=0,x=58,y=76}
  ,凌波城={造型="羽灵神",武器= "庄周梦蝶",地图=1150,方向=0,x=21,y=59}
  ,神木林={造型="巫蛮儿",武器= "裂云啸日",地图=1138,方向=0,x=38,y=116}
  ,无底洞={造型="鬼潇潇",武器= "雪羽穿云",地图=1139,方向=0,x=47,y=127}
  ,花果山={造型="桃夭夭",武器= "金风玉露",地图=1251,方向=0,x=107,y=42}
  ,天机城={造型="偃无师",武器= "秋水澄流",地图=1250,方向=1,x=60,y=93}
  ,女魃墓={造型="鬼潇潇",武器= "月影星痕",地图=1249,方向=1,x=19,y=100}
  }
  for n=1,#首席弟子数据类 do
   self.门派名称= 首席弟子数据类[n]
   self.闯关id=self:生成任务id()
   门派闯关活动id[#门派闯关活动id+1]=self.闯关id
    任务数据[self.闯关id]={
 类型="门派闯关开始"
 ,id=self.闯关id
 ,起始=os.time()
 ,结束=3600
 ,任务id=self.闯关id
 ,地图编号=首席弟子[self.门派名称].地图
 ,地图名称=self.门派名称
 ,名称=self.门派名称.."护法"
 ,造型=首席弟子[self.门派名称].造型
 ,门派=self.门派名称
 ,方向=首席弟子[self.门派名称].方向
 ,坐标={x=首席弟子[self.门派名称].x,y=首席弟子[self.门派名称].y}
 ,数字id=0
 ,武器={名称=首席弟子[self.门派名称].武器,等级=160,强化=1,类别=取武器类型(首席弟子[self.门派名称].武器)}
 ,战斗=false
 ,称谓="★门派护法★"
 ,场次=1
 ,积分=0
 ,等级=160
 }
   地图处理类:添加单位(任务数据[self.闯关id])
    end
 end
function 任务控制类:触发门派闯关任务(id,标识,难度)
  if 玩家数据[id].队伍==0  then
   发送数据(玩家数据[id].连接id,7,"#y/你的队伍呢？")
   return 0
    end
 self.任务id56=地图处理类.MapData[玩家数据[id].地图].单位组[标识].id
 self.全部通过=true
 self.任务id561=角色处理类:GetTaskID(玩家数据[id],"门派闯关")
 for n=1,#队伍数据[玩家数据[id].队伍].队员数据 do
    if 角色处理类:GetTaskID(玩家数据[队伍数据[玩家数据[id].队伍].队员数据[n]],"门派闯关")~=self.任务id561 then
     广播队伍消息(id,7,"#y/"..玩家数据[队伍数据[玩家数据[id].队伍].队员数据[n]].角色.名称.."当前任务与队长任务不相符")
     self.全部通过=false
      end
   end
 if self.全部通过 then
     local 临时序号 = 100012

          if 难度 == 1 then 临时序号 = 100012
    elseif 难度 == 2 then 临时序号 = 888903
    elseif 难度 == 3 then 临时序号 = 888904
    elseif 难度 == 4 then 临时序号 = 888905
    elseif 难度 == 5 then 临时序号 = 888906
    elseif 难度 == 6 then 临时序号 = 888907
    elseif 难度 == 7 then 临时序号 = 888908
    elseif 难度 == 8 then 临时序号 = 888909
    elseif 难度 == 9 then 临时序号 = 888910
    elseif 难度 == 10 then 临时序号 = 888911

      end
      战斗准备类:进入处理(id,临时序号,"66",self.任务id56)

   end
 end
function 任务控制类:完成门派闯关任务(id组, 任务id,序号)
 for n=1,#id组 do
   if 玩家数据[id组[n]]~=nil then
      self.符合抓鬼id=true
       self.抓鬼奖励参数=1+#任务数据[角色处理类:GetTaskID(玩家数据[id组[n]],"门派闯关")].关卡数量*0.05
     if self.符合抓鬼id then
        self.抓鬼奖励等级=玩家数据[id组[n]].角色.等级
        self.抓鬼奖励经验=math.floor(self.抓鬼奖励等级*self.抓鬼奖励等级*45*self.抓鬼奖励参数)
        self.抓鬼奖励银子=math.floor((self.抓鬼奖励等级*self.抓鬼奖励等级+math.random(3000,3500))*self.抓鬼奖励参数*3)
        角色处理类:添加经验(玩家数据[id组[n]],self.抓鬼奖励经验,"门派闯关")
            角色处理类:添加银子(玩家数据[id组[n]],self.抓鬼奖励银子,"门派闯关")

      local 临时威望 = 0
      local 临时星级 = 0
      local 临时仙玉 = 0
      if 序号 == 100012 then
         临时威望 = 2
           临时星级 = 1
         临时仙玉 =math.random(30,70)
      elseif 序号 == 888903 then

      临时威望 = 2
         临时星级 = 2
         临时仙玉 =math.random(35,75)
            elseif 序号 == 888904 then

      临时威望 = 3
         临时星级 = 3
         临时仙玉 =math.random(45,80)
            elseif 序号 == 888905 then

      临时威望 = 3
         临时星级 = 4
         临时仙玉 =math.random(50,85)
            elseif 序号 == 888906 then

      临时威望 = 4
         临时星级 = 5
         临时仙玉 =math.random(55,90)
            elseif 序号 == 888907 then

      临时威望 = 4
         临时星级 = 6
         临时仙玉 =math.random(60,95)
            elseif 序号 == 888908 then

      临时威望 = 5
         临时星级 = 7
         临时仙玉 =math.random(65,100)
            elseif 序号 == 888909 then

      临时威望 = 5
         临时星级 = 8
         临时仙玉 =math.random(70,105)
            elseif 序号 == 888910 then

      临时威望 = 6
         临时星级 = 9
         临时仙玉 =math.random(75,110)
            elseif 序号 == 888911 then

        临时威望 = 6
         临时星级 = 10
         临时仙玉 =math.random(80,115)
      end

      角色处理类:添加威望积分(玩家数据[id组[n]],临时威望)
       角色处理类:添加仙玉(玩家数据[id组[n]],临时仙玉,"门派闯关")
    --  table.print(活动数据)
          if 活动数据.闯关星级[id组[n]]==nil then
             活动数据.闯关星级[id组[n]] = {名称=玩家数据[id组[n]].角色.名称,积分 =0}
          end
      if 玩家数据[id组[n]].队长  then
         活动数据.闯关星级[id组[n]].积分 = 活动数据.闯关星级[id组[n]].积分 + 临时星级
       -- print(活动数据.闯关星级[id组[n]])
      end

        if 玩家数据[id组[n]].召唤兽.数据.参战~=0 then
          self.抓鬼奖励等级=玩家数据[id组[n]].召唤兽.数据[玩家数据[id组[n]].召唤兽.数据.参战].等级
          self.抓鬼奖励经验=math.floor(self.抓鬼奖励等级*45*self.抓鬼奖励等级*self.抓鬼奖励参数*0.65+150)
          玩家数据[id组[n]].召唤兽:添加经验(self.抓鬼奖励经验,id组[n],玩家数据[id组[n]].召唤兽.数据.参战,"门派闯关")
        end
        if 玩家数据[id组[n]].成就系统.门派闯关 ~= nil then
            玩家数据[id组[n]].成就系统.门派闯关.次数 = 玩家数据[id组[n]].成就系统.门派闯关.次数 + 1
        else
        玩家数据[id组[n]].成就系统.门派闯关 = {次数=0,奖励=0,等级=0}
        end
         if 活动次数数据[id组[n]] == nil then
                    活动次数数据[id组[n]] = {飞贼次数=0,门派次数=0}
                   end
                   活动次数数据[id组[n]].门派次数 = 活动次数数据[id组[n]].门派次数 + 1
                   local 奖励物品 = {}
                   local 奖励概率 = {}
                   local 奖励数量 = {}
                   local 奖励总概率 = f函数.读配置(ServerDirectory..[[配置文件\内置活动奖励\门派闯关.txt]], "门派闯关", "奖励总概率")+0
                   for i=1,12 do
                       奖励物品[i]=f函数.读配置(ServerDirectory..[[配置文件\内置活动奖励\门派闯关.txt]], "门派闯关", "物品["..tostring(i).."]")
                       奖励概率[i]=f函数.读配置(ServerDirectory..[[配置文件\内置活动奖励\门派闯关.txt]], "门派闯关", "概率["..tostring(i).."]")+0
                       奖励数量[i]=f函数.读配置(ServerDirectory..[[配置文件\内置活动奖励\门派闯关.txt]], "门派闯关", "数量["..tostring(i).."]")+0
                   end
                   local 循环次数 = 取幸运值奖励(玩家数据[id组[n]].角色.幸运)
                   local 奖励次数 = 0
                   for i=1,循环次数 do
                       local 物品名称 = ""
                       local 随机奖励 = math.random(奖励总概率)
                       local 数量 = 0
                       if 随机奖励<=奖励概率[1] then
                          物品名称 = 奖励物品[1]
                          数量 = math.random(1,奖励数量[1])
                          奖励次数 = 奖励次数 + 1
                       elseif 随机奖励<=奖励概率[2] then
                          物品名称 = 奖励物品[2]
                          数量 = math.random(1,奖励数量[2])
                          奖励次数 = 奖励次数 + 1
                       elseif 随机奖励<=奖励概率[3] then
                          物品名称 = 奖励物品[3]
                          数量 = math.random(1,奖励数量[3])
                          奖励次数 = 奖励次数 + 1
                       elseif 随机奖励<=奖励概率[4] then
                          物品名称 = 奖励物品[4]
                          数量 = math.random(1,奖励数量[4])
                          奖励次数 = 奖励次数 + 1
                       elseif 随机奖励<=奖励概率[5] then
                          物品名称 = 奖励物品[5]
                          数量 = math.random(1,奖励数量[5])
                          奖励次数 = 奖励次数 + 1
                       elseif 随机奖励<=奖励概率[6] then
                          物品名称 = 奖励物品[6]
                          数量 = math.random(1,奖励数量[6])
                          奖励次数 = 奖励次数 + 1
                       elseif 随机奖励<=奖励概率[7] then
                          物品名称 = 奖励物品[7]
                          数量 = math.random(1,奖励数量[7])
                          奖励次数 = 奖励次数 + 1
                       elseif 随机奖励<=奖励概率[8] then
                          物品名称 = 奖励物品[8]
                          数量 = math.random(1,奖励数量[8])
                          奖励次数 = 奖励次数 + 1
                       elseif 随机奖励<=奖励概率[9] then
                          物品名称 = 奖励物品[9]
                          数量 = math.random(1,奖励数量[9])
                          奖励次数 = 奖励次数 + 1
                       elseif 随机奖励<=奖励概率[10] then
                          物品名称 = 奖励物品[10]
                          数量 = math.random(1,奖励数量[10])
                          奖励次数 = 奖励次数 + 1
                       elseif 随机奖励<=奖励概率[11] then
                          物品名称 = 奖励物品[11]
                          数量 = math.random(1,奖励数量[11])
                          奖励次数 = 奖励次数 + 1
                       elseif 随机奖励<=奖励概率[12] then
                          物品名称 = 奖励物品[12]
                          数量 = math.random(1,奖励数量[12])
                          奖励次数 = 奖励次数 + 1
                       end
                       if 物品名称 ~= "" and 物品名称 == "高级魔兽要诀" then
                          local 技能=取高级兽诀名称()
                          道具处理类:给予道具(id组[n],物品名称,nil,技能)
                       elseif 物品名称 ~= "" and 物品名称 == "特殊魔兽要诀" then
                          local 技能=取特殊兽诀名称()
                          道具处理类:给予道具(id组[n],物品名称,nil,技能)
                       else
                           道具处理类:给予道具(id组[n],物品名称,nil,nil,数量)
                       end
                   end
                   道具处理类:系统兽决存仓(id组[n])
                   道具处理类:系统仓库处理(id组[n])
            广播消息("#hd/".."#S/(门派闯关)".."#R/ "..玩家数据[id组[n]].角色.名称.."#s/在门派闯关活动中表现优异，获得了唐王#R/"..奖励次数.."#G/次物品奖励".."#"..math.random(110))

        local cj = ""
        local 奖励参数 = math.random(300)

    if 序号 == 888909 or 序号 == 888910 or 序号 == 888911 then

        if math.random(150) <= 1 then
         道具处理类:给予道具(id组[n],"装备升星石")
         广播消息("#hd/".."#S/(门派闯关)".."#R/ "..玩家数据[id组[n]].角色.名称.."#Y/派闯关活动中表现优异，获得了唐王赏赐的#g/装备升星石")
      end
         end


        if 奖励参数 >=1 and 奖励参数 <=20 then
          cj= "超级金柳露"
        elseif 奖励参数 >=21 and 奖励参数 <=31 then
            cj="梦幻西瓜"
        elseif 奖励参数 >=32 and 奖励参数 <=43 then
          cj="星辉石"
        elseif 奖励参数 >=44 and 奖励参数 <=50 then
    local  随机五宝 ={"定魂珠","金刚石"}
               cj = 随机五宝[math.random(1,#随机五宝)]
        elseif 奖励参数 >=61 and 奖励参数 <=73 then
          cj="超级金柳露"
        elseif 奖励参数 >=74 and 奖励参数 <=80 then
          cj="彩果"
        elseif 奖励参数 >=81 and 奖励参数 <=90 then
            local 随机兽决 = 取高级兽诀名称()
      if  门派闯关奖励[随机兽决]~=nil and 门派闯关奖励[随机兽决].id==0  then
          --local 临时月 =os.date("%Y-%m-%d-%H:%M:%S",os.time())
          门派闯关奖励[随机兽决].id = id组[n]
        门派闯关奖励[随机兽决].时间 = os.time()
       end
              道具处理类:给予道具(id组[n],"高级魔兽要诀",nil,随机兽决)
            广播消息("#hd/".."#S/(门派闯关)".."#R/ "..玩家数据[id组[n]].角色.名称.."#y/在门派闯关活动中表现优异，获得了唐王赏赐的#R/"..随机兽决.."#G/高级魔兽要诀".."#"..math.random(110))
        elseif 奖励参数 >=91 and 奖励参数 <=96 then
          cj=取随机宝石()
        elseif 奖励参数 >=97 and 奖励参数 <=100 then
        道具处理类:给予道具(id组[n],"大米")
        广播消息("#hd/".."#S/(门派闯关)".."#R/ "..玩家数据[id组[n]].角色.名称.."#Y/派闯关活动中表现优异，获得了唐王赏赐的#g/大米")
        elseif 奖励参数 >=101 and 奖励参数 <=111 then
          cj=取随机强化石()
        elseif 奖励参数 >=112 and 奖励参数 <=118 then
              cj="魔兽要诀"

         elseif 奖励参数 >=119 and 奖励参数 <=129 then
               local 随机兽决 = 取门派闯关兽诀名称()
      if  门派闯关奖励[随机兽决]~=nil and 门派闯关奖励[随机兽决].id==0  then
          --local 临时月 =os.date("%Y-%m-%d-%H:%M:%S",os.time())
          门派闯关奖励[随机兽决].id = id组[n]
        门派闯关奖励[随机兽决].时间 = os.time()
       end
              道具处理类:给予道具(id组[n],"高级魔兽要诀",nil,随机兽决)
            广播消息("#hd/".."#S/(门派闯关)".."#R/ "..玩家数据[id组[n]].角色.名称.."#s/在门派闯关活动中表现优异，获得了唐王赏赐的#R/"..随机兽决.."#G/高级魔兽要诀".."#"..math.random(110))
        end
        if cj ~= "" then
          道具处理类:给予道具(id组[n],cj)

            --广播消息("#hd/".."#S/(门派闯关)".."#R/ "..玩家数据[id组[n]].角色.名称.."#y/在门派闯关活动中表现优异，获得了唐王赏赐的#G/"..cj.."#"..math.random(110))
        end
     end
   end
 end

 self.闯关任务id=角色处理类:GetTaskID(玩家数据[id组[1]],"门派闯关")
 任务数据[self.闯关任务id].关卡数量[#任务数据[self.闯关任务id].关卡数量+1]=任务数据[self.闯关任务id].当前关卡

 if #任务数据[self.闯关任务id].关卡数量>=18 then
    广播队伍消息(id组[1],7,"#y/你们已经完成了本轮考验，请找使者重新领取任务")
    for n=1,#id组 do
      if 玩家数据[id组[n]]~=nil then
        if 活动进度[id组[n]] == nil then
         活动进度[id组[n]]={师门=0,抓鬼=0,鬼王=0,门派闯关=0,皇宫飞贼=0,知了=0,通天塔=0,车迟斗法=0,乌鸡国=0,高级藏宝图=0,玲珑宝图=0,新手泡泡=0,夏日炎炎=0,年兽活动=0,地煞活动=0,天罡神器=0,任务链=0,轮回镜=0}
       end
       if 活动进度[id组[n]].门派闯关 < 5 then
        活动进度[id组[n]].门派闯关 = 活动进度[id组[n]].门派闯关 + 1
       end
       角色处理类:添加银子(玩家数据[id组[n]],math.floor(玩家数据[id组[n]].角色.等级*2000),"门派闯关")
       角色处理类:取消任务(玩家数据[id组[n]],self.闯关任务id)
      end
    end
    任务数据[self.闯关任务id]=nil
    return 0
  else
   self.复制数组={}
   for n=1,18 do
     self.允许复制=true

     for i=1,#任务数据[self.闯关任务id].关卡数量 do

       if 任务数据[self.闯关任务id].关卡数量[i]==n then

         self.允许复制=false

         end


       end

      if self.允许复制==true then
        self.复制数组[#self.复制数组+1]={序号=n,排序=math.random(1000)}
        end
     end
    table.sort(self.复制数组,function(a,b) return a.排序>b.排序 end )
    任务数据[self.闯关任务id].当前关卡=self.复制数组[math.random(#self.复制数组)].序号
     for n=1,#id组 do
     self:刷新追踪任务信息(id组[n])
     end
    广播队伍消息(id组[1],7,"#y/任务数据已经刷新，请及时查看")

   end

 --地图处理类:移除单位(玩家数据[id组[1]].地图,任务id)
 --任务数据[任务id]=nil

 end

 function 任务控制类:完成镇魔卫道任务(id组,序号)
 for n=1,#id组 do
   if 玩家数据[id组[n]]~=nil then
     if 活动数据.本日镇魔[id组[n]].当前 ==0 or 玩家数据[id组[n]].角色.额外镇魔 >0  then

     if 玩家数据[id组[n]].角色.额外镇魔 >0 then
       玩家数据[id组[n]].角色.额外镇魔 = 玩家数据[id组[n]].角色.额外镇魔 - 1
    end
    if 序号==nil  or 序号 <0 then
           return
    end

            local 物品倍率 = 0
        local 奖励加成 = 1
        if 角色处理类:扣除祈福次数(id组[n],"镇魔卫道加成")  then
                    物品倍率 = 5
          奖励加成 = 1.05
                 end
           --临时威望 = math.floor(临时威望*奖励加成)
         --临时仙玉 = math.floor(临时仙玉*奖励加成)
         --临时银子 = math.floor(临时银子*奖励加成)


        local 临时序号 = 序号
      local 临时威望 = 2 + math.floor(临时序号/8)
      local 临时星级 = 临时序号
      local 临时仙玉 = math.random(30,70) + math.floor(临时序号/8)*50
      local 临时银子 = math.random(500000,1000000) + math.floor(临时序号/8)*100000


      if 是否聚宝盒(id组[n]) then
         临时威望 = math.floor(临时威望*1.5)
         临时仙玉 = math.floor(临时仙玉*1.5)
         临时银子 = math.floor(临时银子*1.5)
      end

         临时威望 = math.floor(临时威望*奖励加成)
         临时仙玉 = math.floor(临时仙玉*奖励加成)
         临时银子 = math.floor(临时银子*奖励加成)



            角色处理类:添加银子(玩家数据[id组[n]],临时银子,"门派闯关")
      角色处理类:添加镇魔声望(玩家数据[id组[n]],临时威望)
      角色处理类:添加镇魔积分(玩家数据[id组[n]],临时威望*2)
      角色处理类:添加仙玉(玩家数据[id组[n]],临时仙玉,"门派闯关")


      if 玩家数据[id组[n]].角色.连续镇魔 ==1 then
        角色处理类:添加镇魔积分(玩家数据[id组[n]],临时威望+1,1)
      end
            玩家数据[id组[n]].角色.连续镇魔 = 1

         活动数据.本日镇魔[id组[n]].当前 =  临时星级
         活动数据.本日镇魔[id组[n]].结束 = os.time()
         活动数据.本日镇魔[id组[n]].耗时 = 活动数据.本日镇魔[id组[n]].结束 - 活动数据.本日镇魔[id组[n]].开始

       if  临时星级 == 玩家数据[id组[n]].角色.累计镇魔.当前  and 活动数据.本日镇魔[id组[n]].耗时 <  玩家数据[id组[n]].角色.累计镇魔.耗时  then
         玩家数据[id组[n]].角色.累计镇魔.耗时 = 活动数据.本日镇魔[id组[n]].耗时

       elseif 临时星级 > 玩家数据[id组[n]].角色.累计镇魔.当前  then
           玩家数据[id组[n]].角色.累计镇魔.当前 = 临时星级
         玩家数据[id组[n]].角色.累计镇魔.耗时 = 活动数据.本日镇魔[id组[n]].耗时

        end
        local cj = ""
        local 奖励参数 = math.random(200-物品倍率)

                if 是否聚宝盒(id组[n]) then
             奖励参数 =  math.random(150-物品倍率)
            if math.random(200-物品倍率) <= 50+临时序号*2 then   ---改回
                      local cj1 = {"鬼谷子","装备升星石","宠物造型药水","三界密录"}
            local 临时奖品 = cj1[math.random(#cj1)]

            if math.random(200-物品倍率) <= 5 then
              临时奖品 = "随机银河加护"
            end
                道具处理类:给予道具(id组[n], 临时奖品)
            发送数据(玩家数据[id组[n]].连接id,7,"#y/拥有聚宝盒获得了额外奖励"..临时奖品)
               广播消息( "#hd/".."#S/(镇魔卫道)(触发聚宝盒)".."#R/ "..玩家数据[id组[n]].角色.名称.."#Y/镇魔卫道活动中表现优异，获得了唐王赏赐的#g/"..临时奖品)
              end
          end
        if math.random(200-物品倍率) <= 50 +临时序号 then
               local cj1 = {"鬼谷子","装备升星石","宠物造型药水","三界密录"}
         local 临时奖品 = cj1[math.random(#cj1)]
         道具处理类:给予道具(id组[n], 临时奖品)
         发送数据(玩家数据[id组[n]].连接id,7,"#y/你获得了额外奖励"..临时奖品)
         广播消息( "#hd/".."#S/(镇魔卫道)".."#R/ "..玩家数据[id组[n]].角色.名称.."#Y/镇魔卫道活动中表现优异，获得了唐王赏赐的#g/"..临时奖品)
      end
    if 玩家数据[id组[n]].队长  and 临时序号 >=50  then
     发送游戏公告( "#G/由玩家#R/"..玩家数据[id组[n]].角色.名称.."#G/带领的队伍,竟然成功挑战了#R/镇魔"..临时序号.."阶#G/,可以傲视群雄了！！")
     elseif 玩家数据[id组[n]].队长  and 临时序号 >=40  then
     发送游戏公告( "#G/由玩家#R/"..玩家数据[id组[n]].角色.名称.."#G/带领的队伍,竟然成功挑战了#R/镇魔"..临时序号.."阶#G/,实力非比寻常！！")
      elseif 玩家数据[id组[n]].队长  and 临时序号 >=30  then
     发送游戏公告( "#G/由玩家#R/"..玩家数据[id组[n]].角色.名称.."#G/带领的队伍,竟然成功挑战了#R/镇魔"..临时序号.."阶#G/,实力不容小视！！")
     elseif 玩家数据[id组[n]].队长  and 临时序号 >=20  then
     发送游戏公告( "#G/由玩家#R/"..玩家数据[id组[n]].角色.名称.."#G/带领的队伍,竟然成功挑战了#R/镇魔"..临时序号.."阶#G/,勇猛无比！！")
     elseif 玩家数据[id组[n]].队长  and 临时序号 >=10  then
     发送游戏公告( "#G/由玩家#R/"..玩家数据[id组[n]].角色.名称.."#G/带领的队伍,竟然成功挑战了#R/镇魔"..临时序号.."阶#G/！！")

      elseif 玩家数据[id组[n]].队长  and 临时序号 >=5  then
     发送游戏公告( "#G/由玩家#R/"..玩家数据[id组[n]].角色.名称.."#G/带领的队伍,竟然成功挑战了#R/镇魔"..临时序号.."阶#G/！！")
      elseif 玩家数据[id组[n]].队长  and 临时序号 >=1  then
     发送游戏公告( "#G/由玩家#R/"..玩家数据[id组[n]].角色.名称.."#G/带领的队伍,竟然成功挑战了#R/镇魔"..临时序号.."阶#G/！！")

     end


        if 奖励参数 >=1 and 奖励参数 <=3 then
          cj= "鬼谷子"
        elseif 奖励参数 >=4 and 奖励参数 <=50 then
           cj="阵法碎片"
        elseif 奖励参数 >=51 and 奖励参数 <=55 then
           cj="三界密录"
    elseif 奖励参数 >=56 and 奖励参数 <=66 then
           cj="高级召唤兽内丹"
    elseif 奖励参数 >=67 and 奖励参数 <=77 then
          -- cj="仙玉50"
    elseif 奖励参数 >=88 and 奖励参数 <=99 then
         --  cj="仙玉100"
    elseif 奖励参数 >=100 and 奖励参数 <=110 then
          -- cj="仙玉150"
    elseif 奖励参数 >=111 and 奖励参数 <=111 then
           cj="摸金符"
     elseif 奖励参数 >=112 and 奖励参数 <=112 then
           cj="随机阳光护符"

        end



        if cj ~= "" then
          道具处理类:给予道具(id组[n],cj)
           发送数据(玩家数据[id组[n]].连接id,7,"#y/你获得了额外奖励"..cj)
         广播消息( "#hd/".."#S/(镇魔卫道)".."#R/ "..玩家数据[id组[n]].角色.名称.."#Y/镇魔卫道活动中表现优异，获得了唐王赏赐的#g/"..cj)
        end
    if math.random(150-物品倍率)<=1  then
         local 随机名称 =取随机宝石()
           local 随机等级 = math.random(13,15)
           道具处理类:给予道具(id组[n], 随机名称, 随机等级)
           广播消息( "#hd/".."#S/(镇魔卫道)".."#G/".. 玩家数据[id组[n]].角色.名称.. "#y/镇魔卫道活动中运气爆棚，获得了唐王赏赐的#G/"..随机等级.."J"..随机名称.."#"..math.random(110))
        if 是否聚宝盒(id组[n]) and math.random(100-物品倍率)<=40  then
           道具处理类:给予道具(id组[n], 随机名称, 随机等级)
           广播消息( "#hd/".."#S/(镇魔卫道)(聚宝盒触发双倍)".."#G/".. 玩家数据[id组[n]].角色.名称.. "#y/镇魔卫道活动中运气爆棚，获得了唐王赏赐的#G/"..随机等级.."J"..随机名称.."#"..math.random(110))
         end
      end
    else
   发送数据(玩家数据[id组[n]].连接id,7,"#y/你今天已经完成该任务，无法获取奖励")

    end
     end
   end
 end

function 任务控制类:完成镇魔卫道任务2(id组,序号,临时序号)
 for n=1,#id组 do
   if 玩家数据[id组[n]]~=nil then
   if 活动数据.本日镇魔[id组[n]].中奖[序号] ==0 or  玩家数据[id组[n]].角色.额外镇魔 >0  then
    活动数据.本日镇魔[id组[n]].中奖[序号] = 1
       if 玩家数据[id组[n]].角色.额外镇魔 >0 then
       玩家数据[id组[n]].角色.额外镇魔 = 玩家数据[id组[n]].角色.额外镇魔 - 1
    end
    if 临时序号==nil  or 临时序号 <0 then
           return
    end

            local 物品倍率 = 0
         if 角色处理类:扣除祈福次数(id组[n],"镇魔卫道加成")  then
                    物品倍率 = 5
                 end
           --临时威望 = math.floor(临时威望*奖励加成)
         --临时仙玉 = math.floor(临时仙玉*奖励加成)
         --临时银子 = math.floor(临时银子*奖励加成)



     local 临时序号1 = 序号-888967
     local 临时序号2 = 临时序号
        local cj = ""
        local 奖励参数 = math.random(250-临时序号1-临时序号2-物品倍率)

      if 是否聚宝盒(id组[n]) then
       奖励参数 = math.floor(奖励参数/1.5)
      end
        if 奖励参数 >=1 and 奖励参数 <=10 then
          --cj= "仙玉100"
       -- elseif 奖励参数 >=11 and 奖励参数 <=35 then
         --  cj="精灵水晶"
        elseif 奖励参数 >=36 and 奖励参数 <=55 then
           cj="三界密录"

   -- elseif 奖励参数 >=56 and 奖励参数 <=65 then
           --cj="五宝礼盒"
     elseif 奖励参数 >=66 and 奖励参数 <=67 then
           cj="灵饰洗炼石"
     elseif 奖励参数 >=103 and 奖励参数 <=104 then
           cj="装备洗炼石"
     elseif 奖励参数 >=105 and 奖励参数 <=107 then
           cj="高级召唤兽内丹"
     elseif 奖励参数 >=120 and 奖励参数 <=130 then
           cj="阵法碎片"
     -- elseif 奖励参数 >=140 and 奖励参数 <=145 then
         --  cj="仙玉50"
      elseif 奖励参数 >=146 and 奖励参数 <=146 then
           cj="摸金符"
        elseif 奖励参数 >=147 and 奖励参数 <=147 then
           cj="随机星光护符"
        elseif 奖励参数 >=148 and 奖励参数 <=148 then
           cj="随机月光护符"

        end
        if cj ~= "" then
          道具处理类:给予道具(id组[n],cj)
       发送数据(玩家数据[id组[n]].连接id,7,"#y/你获得了额外奖励"..cj)
         广播消息( "#hd/".."#S/(镇魔卫道)".."#R/ "..玩家数据[id组[n]].角色.名称.."#Y/镇魔卫道活动中表现优异，获得了唐王赏赐的#g/"..cj)

        end
  else
    发送数据(玩家数据[id组[n]].连接id,7,"#y/你今天已经完成该任务，无法获取奖励")

    end
     end
   end
 end






